Methods and apparatus for proactively switching between available networks

ABSTRACT

Methods and apparatus allow a mobile device to proactively switch to a new network by using quality of connection information and the rate of change of the received signal strength indication (RSSI) to proactively switch from a first network, such as a WiFi network, to the new network, such as another WiFi network or a cellular network. For example, the mobile device determines a rate of change of the RSSI for the first network. Based on the rate of change of the RSSI, the mobile device predicts when the RSSI of the network is beyond a quality threshold. Based on the prediction, the mobile device switches from the first network to a second network. In another example, the method and device uses a quality of connection of the first network connection to determine when to switch from a first network connection to a second network connection.

CROSS REFERENCE TO RELATED APPLICATIONS

This U.S. patent application is a continuation of, and claims priorityunder 35 U.S.C. § 120 from, U.S. patent application Ser. No. 16/145,564,filed on Sep. 28, 2018. The disclosure of this prior application isconsidered part of the disclosure of this application and is herebyincorporated by reference in its entirety.

BACKGROUND

Internet connectivity is one of the most important functions of a mobiledevice (e.g., a smartphone, wearable, tablet or other wireless mobiledevice). Often, multiple different network connections (e.g., cellularnetwork connections and/or wireless network connections) are availableto the mobile device. However, a device may need to switch to a cellularnetwork connection or another wireless network connection if the currentwireless network connection falters. For example, after a mobile deviceconnects to the Internet via a first wireless network connection, a usermay physically move the mobile device and/or the access point (AP)providing the first wireless network connection to a new location (e.g.,the user may move from his or her office to his or her car). As thedistance increases between the mobile device and the AP, the reliabilityof the first network connection may decrease. Eventually, when thedistance is too great, the mobile device might not be able to access theInternet using the first network connection, and may switch to a secondnetwork connection (e.g., a second wireless network provided by a secondAP and/or a cellular network). However, the device may switch to thesecond network connection too late, causing poor internet connection forthe device and/or the device to lose complete network connectivity for aperiod of time. Additionally, and/or alternatively, the device mayswitch to the second network too early, which causes thrashing betweenthe network types. Accordingly, there exists a need for one or moreimproved methods and/or devices to address one or more above-noteddrawbacks.

SUMMARY

Briefly, to prevent the loss of network connectivity, the method andsystem described below uses factors to predict when the mobile devicewill lose and/or receive poor network connectivity, and proactivelyswitch to a new network connection (e.g., a new cellular network and/orother type of wireless network). As explained below, by using the mobiledevice to proactively switch to a new network, poor and/or loss ofnetwork connectivity can be reduced. Furthermore, by the mobile deviceperforming the methods below, the mobile device is not creating anadditional network load for the communication network.

In some examples, the mobile device uses an obtained received signalstrength indication (RSSI) information from the first wireless networkto switch between network connections. For instance, the mobile devicedetermines a rate of change of the RSSI for the first network. Based onthe rate of change of the RSSI, the mobile device predicts when the RSSIof the network is beyond a quality threshold. Based on the prediction,the mobile device switches from the first network to a second network.In some examples, the mobile device uses a Kalman filter to predict whenthe RSSI of the network is beyond the quality threshold, and proactivelyswitches to a new network connection.

In some implementations, the method and device uses the RSSI rate ofchange and a quality of the connection of the first network connectionto determine when to switch from a first network connection to a secondnetwork connection. For example, the device uses the RSSI velocity asexplained above. Further, the device determines the quality ofconnection based on a number of successful and/or failed packettransmissions with the first network. Additionally, and/oralternatively, the device determines the quality of connection based ona number of successful packet receptions and/or a ratio of data movedversus data stuck/stalled from the first network.

DESCRIPTION OF DRAWINGS

The disclosure will be more readily understood in view of the followingdescription when accompanied by the below figures and wherein likereference numerals represent like elements, wherein:

FIG. 1 is a block diagram illustrating one example of a communicationsystem for proactively switching to a new network connection inaccordance with one example set forth in the disclosure;

FIG. 2 is another block diagram illustrating one example of acommunication system for proactively switching to a new networkconnection in accordance with one example set forth in the disclosure;

FIG. 3 is yet another block diagram illustrating one example of acommunication system for proactively switching to a new networkconnection in accordance with one example set forth in the disclosure;

FIG. 4 is a block diagram illustrating a mobile device for proactivelyswitching to a new network connection in accordance with one example setforth in the disclosure;

FIG. 5 is a flow chart illustrating one example of a method performed bya mobile device to proactively switch to a new network connection inaccordance with one example set forth in the disclosure;

FIG. 6 is a block diagram illustrating a mobile device for proactivelyswitching to a new network connection in accordance with one example setforth in the disclosure;

FIG. 7 is a flow chart illustrating one example of a method performed bya mobile device to proactively switch to a new network connection inaccordance with one example set forth in the disclosure;

FIG. 8 is a block diagram illustrating a mobile device for proactivelyswitching to a new network connection in accordance with one example setforth in the disclosure;

FIG. 9 is a flow chart illustrating one example of a method performed bya mobile device to proactively switch to a new network connection inaccordance with one example set forth in the disclosure;

FIG. 10 is a graphical representation of example data of RSSI values inaccordance with one example set forth in the disclosure; and

FIG. 11 is another graphical representation of an example data of RSSIvelocity values in accordance with one example set forth in thedisclosure.

DETAILED DESCRIPTION

Exemplary embodiments provide a technical solution that addresses theproblem of having poor connections or switching connections too late. Asused herein, a mobile device includes any mobile apparatus, system,and/or device that is able to connect to the Internet (e.g., the WorldWide Web) via one or more network connections. For example, the mobiledevice can be, but is not limited to, smartphones, smartwatches,personal digital assistants (PDAs), tablet devices, other handheld orportable electronic devices, MP 3 players, battery-powered devices,wearable devices, radios, navigation devices, laptop or note computers,DVRs (digital video recorders), gaming devices, cameras, netbooks,e-readers, navigation devices with video capable screens, and/or othermobile devices.

FIG. 1 illustrates one example of a communication system 100 forproactively switching to a new network connection. The communicationsystem 100 includes at least one mobile device 102, and the mobiledevice 102 communicates with (e.g., connect to) the Internet 108 via oneor more network connections and/or communication networks. In otherwords, the mobile device 102 transmits (e.g., provides and/or sends)information to a server, such as a web server 110 (e.g., a server thatsupports internet protocols or otherwise is capable of interaction withthe Internet 108 and/or the World Wide Web). Further, the mobile device102 receives (e.g., obtain) information from the web server 110.

The mobile device 102 communicates (e.g., receive and transmitinformation) with the Internet 108 (e.g., web server 110) via multipledifferent network connections and/or communication networks. Forexample, the mobile device 102 connects to the Internet 108 via a WiFinetwork (e.g., a first WiFi network 104 and/or a second WiFi network116) and/or via a cellular network (e.g., a cellular network 112).

The WiFi networks 104 and/or 116 is any wireless local area network(WLAN) operating under the various IEEE 802.11 standards, or any otherkind of wireless network. Further, the WiFi networks 104 and/or 116 alsoincludes at least one WiFi access point (AP) (e.g., first WiFi AP 106and/or second WiFi AP 118). The WiFi APs 106 and 118 includes anysuitable device, apparatus, and/or system (e.g., a mesh network system)capable of providing WiFi connectivity to the WiFi networks 104 and/or116. In some examples, the WiFi AP 106 and/or 118 can also be hot spotsserving as publicly accessible wireless internet connectiontransceivers, such as are found in public or semi-public venues (e.g.,malls, restaurants, stores, hotels, commercial buildings, doctor'soffices). In some instances, the WiFi networks 104 and/or 116 can beprovided by other mobile devices, such as hotspot/tethering on anothermobile device. In some variations, the WiFi networks 104 and/or 116 canbe provided by transportation services (e.g., trains, planes, buses).

The cellular network 112 includes one or more cellular APs 114, such asone or more cell towers. The cellular network 112 can be any type ofcellular network, including a second-generation (2G) cellular network, athird generation (3G) cellular network, a fourth generation (4G) or longterm evolution (LTE) cellular network, a fifth generation (5G) cellularnetwork, etc.

Although only three network connections and/or communication networksare shown, it should be understood that this is only for simplicity ofillustration and, in practice, there may be more or less than threecommunication networks and/or network connections that the mobile device102 can use to connect to the Internet 108. For example, the mobiledevice 102 can connect to a third WiFi network and/or another cellularnetwork (e.g., the first cellular network 112 is a 4G cellular networkand the second cellular network is a 3G cellular network). Additionally,and/or alternatively, although only one AP (e.g., first WiFi AP 106) isshown for each network, it should be understood that this is only forsimplicity of illustration, and multiple APs can be used to connect to anetwork (e.g., first WiFi Network 104).

Although only a single web server 110 is shown in FIG. 1, it should beunderstood that this is only for simplicity of illustration and, inpractice, the mobile device 102 can often be in communication(simultaneously or substantially simultaneously, or at different times)with multiple web servers rather than just a single web server by way ofthe multiple communication networks, such as the WiFi networks 104, 116and/or the cellular network 112. It should further be understood that,while in the present embodiment, the mobile device 102 is shown to be incommunication with the web server 110 (or multiple web servers),depending upon the embodiment, the mobile device 102 may also be incommunication with one or more other types of servers (e.g., serversthat are not web-based, that is, do not engage in communications via theWorld Wide Web) or other devices that are not servers. That is, FIG. 1should be understood to represent on a most general level wirelesscommunication between a mobile device 102 and any arbitrary number ofany arbitrary type(s) of devices.

The communication links 120, 124, 128 are representative of wirelesssignals transmitted through the air/atmosphere between the mobile device102, the cellular AP 114, the first WiFi AP 106, and the second WiFi AP118. Further, the communication links 122, 126, and 130 are representedof any variety of types of communication paths between the cellular AP114, the first WiFi AP 106, and the second WiFi AP 118, and the webserver 110. Thus, depending upon the embodiment, the communication links122, 126, and 130 can each include one or more wired and/or wirelesscommunication pathways, for example, landline (e.g., fiber optic,copper) wiring, microwave communication, radio channel, wireless path,intranet, internet, and/or World Wide Web communication pathways (whichthemselves can employ numerous intermediary hardware and/or softwaredevices including, for example, numerous routers, etc.).

In addition, a variety of communication protocols and methodologies canbe used to conduct web-based communications via the communication links(e.g., network connections) 120, 122, 124, 126, 128, and/or 130 betweenthe mobile device 102 and web server 110, including for example,transmission control protocol/internet protocol (TCP/IP), extensiblemessaging and presence protocol (XMPP), file transfer protocol (FTP),etc. In some examples, other types of protocols or communicationstechniques can be utilized to achieve web-based and/or internet-typecommunications.

FIG. 2 illustrates a more detailed functional block diagram of thecommunication system 100. For example, FIG. 2 shows a mobile device 102including a processor 202, memory 204, user interface 206, and/or acommunications unit 208. In some examples, the processor 202 is a singleprocessor. In other examples, the processor 202 may have two or moreprocessors carrying out all processing required for the operation of themobile device 102. The processor 202 includes quality of connectionlogic 210, rate of change of the received signal strength indicator(RSSI) logic 212, and switch network logic 214. During operation, thequality of connection logic 210 determines the quality of connection ofa network connection and/or communication network (e.g., a first WiFinetwork 104, a cellular network 112, and/or a second WiFi network 116).The rate of change of RSSI logic 212 determines an RSSI of a networkconnection and/or a communication network. The switch network logic 214obtains (e.g., receives) information from the quality of connectionlogic 210 and/or the rate of change of RSSI logic 212. Based on theinformation, the switch network logic 214 switches from a first network,such as the first WiFi network 104 provided by the first WiFi AP 106, toa second network. The second network is another WiFi network (e.g., WiFiNetwork 116) and/or a cellular network (e.g., cellular network 112). Thequality of connection logic 210, the rate of change of the receivedsignal strength indicator (RSSI) logic 212, and the switch network logic214 will be described in further detail below.

The memory 204 includes read only memory (ROM), random access memory(RAM), or any other suitable non-transitory memory that stores processorinstructions and executable code modules for the operation of the mobiledevice 102. For example, the memory 204 includes a RSSI database 216that stores various data used for the operation of the mobile device102. The memory 204 also stores computer-executable instructions 218that when executed, cause the processor 202 to implement aspects ofembodiments of components discussed herein and/or to perform aspects ofembodiments of methods and procedures discussed herein. While the memory204 is shown in FIG. 2 as separate from the processor 202, in somevariations, the memory 204 may be a part of the processor 202.

The user interface 206 is any type of interface that receives userinput/commands and transmits the user input to one or more componentsand/or entities of the mobile device 102. The communications unit 208allows the mobile device 102 to receive and transmit messages,information, and/or data with the first WiFi AP 106 of the first WiFinetwork 104, the second WiFi AP 118 of the second WiFi network 116,and/or the cellular AP 114 of the cellular network 112. Accordingly,while not shown in FIG. 2, the communications unit 208 may includevarious elements (e.g., antennas, receivers, transmitters,modulation/demodulation units, etc.) as known in the art.

FIG. 3 illustrates another example of a communication system 300 forproactively switching to a new network connection. The communicationsystem 300 includes the same devices, servers, APs, and/or networks ascommunication system 100 and also includes interference 302. Theinterference 302 is any interference (e.g., WiFi radio frequencyinterference and/or physical interference, such as a closed door) thatcauses the mobile device 102 to lose connectivity with the first WiFinetwork 104. For instance, the mobile device 102, via the user interface206, receives user input indicating that the user wants to stream aparticular movie. The web server 110 stores the movie. As such, themobile device 102 transmits one or more data packets indicating arequest for portions of the movie, and the data packets are routed tothe web server 110 via the first WiFi AP 106. However, due to theinterference 302, the first WiFi AP 106 is not able to receive the oneor more data packets indicating the request. As such, the mobile device102 is not be able to display the movie on the user interface.

Additionally, and/or alternatively, the mobile device 102 may havedifficulty receiving information (e.g., data packets) from the firstWiFi AP 106. For example, the web server 110 transmits data packetscorresponding to the movie to the first WiFi AP 106, and the first WiFiAP 106 transmits the data packets to the mobile device 102. However, dueto the interference 302, the mobile device 102 is not able to receiveone or more of the data packets, causing the movie to pause or stallduring playback.

Additionally, and/or alternatively, referring to FIG. 1 and even withoutthe interference 302, the mobile device 102 may have difficultyconnecting to the first WiFi network 104 and/or receiving and/ortransmitting information to the first WiFi AP 106. For example, a userphysically moves the mobile device 102 and/or first WiFi AP 106 to a newlocation (e.g., a user holding the mobile device 102 moves from his orher office to the parking lot). Due to the movement, the mobile device102 begins within range of the first WiFi network 104, but eventuallymoves out of range of the first WiFi network 104. Additionally, and/oralternatively, in some instances, the mobile device 102 is stationaryand the first WiFi AP 106 moves away from the mobile device 102 (e.g.,the first WiFi AP 106 is on a vehicle that drives away from the mobiledevice 102). Similarly, due to the movement of the first WiFi AP 106,the mobile device 102 eventually moves out of range of the first WiFinetwork 104.

To prevent loss of Internet 108 connectivity and/or poor Internet 108connectivity, the mobile device 102, using the quality of connectionlogic 210, the rate of change of RSSI logic 212, and/or the switchnetwork logic 214, proactively switches from the first network (e.g.,the first WiFi network 104) to a second network (e.g., the cellularnetwork 112 and/or the second WiFi network 116). For example, the mobiledevice 102 predicts WiFi un-usability or degraded performance of thefirst WiFi network 104, and proactively switches to a different network.In some examples, this occurs prior to the mobile device 102 and/or userencounters a degraded performance and/or experience (e.g., before themovie stalls and/or stops during playback). Furthermore, similarprediction can be applied for usability (e.g., applied to the secondnetwork, such as the cellular network 112 and/or the second WiFi network116). For example, based on the prediction, the mobile device 102determines whether to switch to the second network and/or which networkto switch to. This will be described in further detail in the methodsand system described below.

FIG. 4 is a more detailed block diagram illustrating the mobile device102 that proactively switches to a new or second network. For example,FIG. 4 shows the processor 202 including the quality of connection (QOC)logic 210, the rate of change of RSSI logic 212, and the switch networklogic 214. The following description is merely exemplary in nature andis in no way intended to limit the disclosure, its application, or uses.For example, as described below in FIGS. 6, 7, 8, and 9, multipleimplementations of the logic 210, 212, and 214 and the method 500 may beused to proactively switch to a second network. As used herein in thespecification (e.g., FIGS. 4, 6, and 8), the term “unit” or “logic”refers to, be part of, or include an Application Specific IntegratedCircuit (ASIC), an electronic circuit, a processor or microprocessor(shared, dedicated, or group) or portion thereof and/or memory (shared,dedicated, or group) that executes one or more software or firmwareprograms, a combinational logic circuit, and/or other suitablecomponents that provide the described functionality. Otherimplementation techniques are equally employed, such as programmablelogic arrays and state machines. Thus, while this disclosure includesparticular examples and arrangements of the units, the scope of thepresent system should not be so limited since other modifications willbecome apparent to the skilled practitioner. FIG. 4 will be describedbelow with reference to FIG. 5. FIG. 5 illustrates an example method forthe mobile device 102 to proactively switch to a second network.

In operation, at step 502, the quality of connection logic 210determines a quality of connection with a first network provided by anAP, such as the first WiFi network 104 provided by the first WiFi AP106. For example, the logic 210 obtains AP information 402 correspondingto an AP, such as the first WiFi AP 106. Based on the AP information414, the logic 210 determines a quality of connection corresponding tothe connection between the mobile device 102 and the first WiFi AP 106.For example, the quality of connection indicates a number of successfulpacket transmission from the mobile device 102 to the first WiFi AP 106,a number of failed packet transmissions from the mobile device 102 tothe first WiFi AP 106, a number of successful packet receptions from thefirst WiFi AP 106 to the mobile device 102, retry counters correspondingto first WiFi AP 106 and the mobile device 102, and/or a ratio of datamoved versus stalled and/or stuck between the first WiFi AP 106 and themobile device 102.

In some examples, the logic 210 uses the quality of connection todetermine whether data is flowing between the mobile device 102 and thefirst WiFi AP 106. For example, the logic 210 determines the quality ofconnection by checking outgoing buffers for connections on each networktechnology interface combined with the presence of retransmit timersand/or incoming data statistics to determine the quality of connection.Additionally, and/or alternatively, based on the quality of connection,the logic 210 determines whether data is flowing and/or the amount ofdata flowing between the mobile device 102 and the first WiFi AP 106.For example, the logic 210 determines whether the data is flowing (e.g.,normal), acceptable (e.g., most of the data packets are beingreceived/transmitted between the first WiFi AP 106 and the mobile device102), barely (e.g., very few of the data packets are beingreceived/transmitted between the first WiFi AP 106 and the mobile device102), and/or not flowing (e.g., no data packets are beingreceived/transmitted between the first WiFi AP 106 and the mobile device102). The logic 210 provides (e.g., transmit and/or send) information406 (e.g., the quality of connection and/or whether data is flowing) tothe switch network logic 214. At step 504, the rate of change (velocity)of RSSI logic 212 determines a rate of change (e.g., velocity) of areceived signal strength indication (RSSI) corresponding to the firstnetwork (e.g., the first WiFi network 104). For example, the logic 212obtains RSSI information 404 indicating current and/or previous RSSIvalues for the first WiFi AP 106. RSSI is a measurement (e.g., numericalvalue) of the power and/or signal strength present in a received signalfrom the first WiFi AP 106. The current RSSI value is the most recentRSSI value of a received signal from the first WiFi AP 106. The previousRSSI values are historical RSSI values of the first WiFi AP 106. Forexample, based on transmissions from the first WiFi AP 106, the mobiledevice 102 determines a WiFi signal strength, such as RSSI, at thelocation of the mobile device 102. The mobile device 102 stores theobserved and/or measured RSSI in memory 204, such as in the RSSIdatabase 216. The logic 212 obtains the current (e.g., most recent) RSSIfor the first WiFi AP 106, and also obtains the previous RSSI of thefirst WiFi AP 106 from the RSSI database 216.

In some examples, the logic 212 determines (e.g., calculate) thevelocity of the RSSI values corresponding to the first WiFi network 104based on the difference between recent RSSI (e.g., current and/orprevious RSSI) values. For example, as the mobile device 102 and/orfirst WiFi AP 106 physically move further apart, the RSSI received atthe mobile device 102 decreases. The logic 212 determines the velocityof the RSSI values as the mobile device 102 and/or first AP 106 moveapart.

In some variations, the logic 212 uses a weighted moving average ofmultiple RSSI values (e.g., current and multiple previous RSSI values)to determine a velocity of the RSSI for the first WiFi AP 106. In someinstances, the logic 212 determines threshold velocity values, such as+/−0.2 as stationary, +/−1 as wandering, +/−4 as striding, and/or +/−10as sprinting. A positive (+) indicates that the RSSI velocity isincreasing between the current RSSI value minus the previous RSSI value,and a negative (−) indicates that the RSSI velocity is decreasing. Basedon comparing the threshold velocity values to the velocity of the RSSIfor the first WiFi AP 106, the logic 212 determines RSSI movementcorresponding to the WiFi AP 106 (e.g., whether the mobile device 102and/or WiFi AP 106 is stationary, wandering, striding, and/orsprinting).

At step 506, the switch network logic 214 predicts that a connection tothe first network (e.g., a WiFi connection 120 between the mobile device102 and the first WiFi AP 106) will be beyond a quality threshold basedon the rate of change (velocity) of the RSSI and the quality ofconnection. For example, the logic 214 obtains information 406 (e.g.,the quality of connection and/or whether data is flowing) andinformation 408 (e.g., the velocity of the RSSI values for the firstWiFi network 104 and/or the RSSI movement). Based on information 406 and408, the logic 214 predicts an instance of time in the future (e.g., 30seconds in the future) that the connection between the first WiFinetwork 104 and the mobile device 102 will be beyond (e.g., above orbelow) a quality threshold. In some variations, predicting that aconnection to the first network will be beyond the quality thresholdindicates that at an instance of time in the future (e.g., 30 seconds inthe future), the mobile device 102 might not able to connect to the webserver 110 via the first WiFi Network 104. In other variations,predicting that a connection to the first network will be beyond thequality threshold indicates that the first WiFi Network 104 may providea poor network connection to connect the mobile device 102 to the webserver 110.

In some examples, the logic 214 uses whether data is flowing and/or theRSSI movement to determine whether the connection to the first networkwill be beyond the quality threshold. For example, the logic 214determines the connection to the first network will be beyond thequality threshold if the connections established via the first WiFi AP106 indicates that data is not flowing and the velocity is at a sprint(−10). Additionally, and/or alternatively, if the data flowing isacceptable and the RSSI movement is wandering, the logic 214 does notdetermine that the connection to the first network will be beyond thequality threshold. However, the logic 214 requests information 406 and408 after a period of time (e.g., 15 seconds) since the connection mayfail soon.

The below table shows one example of determining whether the connectionto the first network will be beyond the quality threshold based onwhether data is flowing (Yes, Acceptable, Barely, No) and the RSSImovement (Stationary, Wandering, Striding, Sprinting). However, thetable below is merely one approach and many other approaches, includingusing different scores for each of the determinations of whether data isflowing and the RSSI movement can be used by the logic 214 to determinewhether to switch to a second network.

Rate of Change (Velocity) of RSSI STATIONARY WANDERING STRIDINGSPRINTING Quality of YES 60+/− 60+/−  60+/53−  60+/50− ConnectionACCEPTABLE 60+/− 60+/53− 53+/50− 50−/0− (Data BARELY 50+/− 53+/50−50+/25− 25+/0− Flowing) NO  0+/− 0+/−  25+/0−  25+/0−

Referring to the table above, in some examples, the quality threshold(e.g., score) is 50. Based on a score being 50 or lower (e.g., barelyand stationary, barely and striding, acceptable and striding), the logic214 predicts that the connection between the mobile device 102 and thefirst WiFi network 104 will have poor network connectivity and/or fail.The logic 214 predicts that the connection to the first network will nothave poor network connectivity and/or fail if the score is higher than50. Additionally, and/or alternatively, the logic 214 predicts theconnection to the first network will have poor network connectivityand/or fail based on whether the velocity is positive and/or negative.For example, the logic 214 predicts that the connection will have poornetwork connectivity and/or fail if there is a negative (−) velocitythat is barely and wandering, but the first network will not have poornetwork connectivity and/or fail if there is a positive (+) velocitythat is wandering and barely.

At step 508, the switch network logic 214 switches from the firstnetwork to the second network based on the prediction that theconnection to the first network will be beyond the quality threshold.For example, the switch network logic 214 switches the mobile device 102from using the first WiFi AP 106 to communicate with the web server 110to using a second WiFi AP 118 and/or a cellular AP 114 to communicatewith the web server 110.

In some examples, switching from the first network to the second networkis further based on usability of the second network (e.g., a predictionof whether the connection to the second network will be beyond thequality threshold). For example, the quality of connection logic 210determines a quality of connection for the second network provided by asecond access point (e.g., second WiFi AP 118 and/or cellular AP 114).Additionally, and/or alternatively, the rate of change of RSSI logic 212determines a rate of change of the RSSI for the second network. Usingthe RSSI and the quality of connection for the second network, theswitch network logic 214 predicts whether a connection to the secondnetwork will be beyond a quality threshold. In some examples, even ifthe connection to the first network will be beyond the qualitythreshold, the switch network logic 214 does not switch from the firstnetwork to the second network if the switch logic 214 determines thatthe connection to the second network will be beyond a quality threshold.

FIG. 6 is another block diagram illustrating the mobile device 102 thatproactively switches to a new or second network. The logic 210 includesa quality of control unit 602 and a probing packet check unit 604.Although these sub-units 602 and 604 are illustrated as children unitssubordinate of the parent logic 210, each sub-unit can be operated as aseparate unit from the parent logic, and other suitable combinations ofsub-units are contemplated to suit different applications. For example,the probing packet check unit 604 can be included in the logic 214instead of being included in the logic 210 as shown in FIG. 6. Thefunctions of the logic 212 and 214 are described above. Additionally,and/or alternatively, the logic 212 and/or 214 are optional (e.g., themobile device 102 proactively switches to a second network without usingthe functionalities of the logic 212 and/or 214). FIG. 6 will bedescribed with reference to FIG. 7. FIG. 7 shows another flowchart of amethod to proactively switch to a new or second network.

At step 702, the quality of connection (QOC) unit 602 obtains APinformation corresponding to a first network, such as the first WiFinetwork 104, as described above. At step 704, the QOC unit 602determines the quality of connection (e.g., data is flowing, acceptable,barely, and/or not flowing) corresponding to the first network. Forexample, the QOC unit 602 determines the quality of connection for thefirst WiFi network 104 over a period of time as described above, andcontinuously determines new quality of connections for the first WiFinetwork 104. The QOC unit 602 provides information 606 (e.g.,information indicating the quality of connection) to the probing packetcheck unit 604. The probing packet check unit 604 also obtains the RSSIinformation 404 indicating the current RSSI of the first WiFi AP 106.The RSSI information 404 is described above. The probing packet checkunit 604 compares the RSSI of the first WiFi AP 106 with an RSSIthreshold value (e.g., a pre-determined and/or pre-programmed RSSIthreshold value).

At step 706, based on the RSSI information and the quality of connectionfor the first network, the probing packet check unit 604 transmits oneor more probing packets 608 to the first AP (e.g., the first WiFi AP106). For example, if the RSSI of the first WiFi AP 106 is below theRSSI threshold and quality of connection indicates that data is notflowing and/or barely flowing between the mobile device 102 and thefirst WiFi AP 106, the probing packet check unit 604 performs a probingpacket check and transmits a probing packet to the first WiFi AP 106 viathe communications unit 208. Based on the transmission, the probingpacket check unit 604 determines whether the transmission and/orreception of the probing packet is successful between the mobile device102 and the first WiFi AP 106. For example, for a successfultransmission, the first WiFi AP 106 receives the probing packet, andtransmits a response packet back to the mobile device 102. If the mobiledevice 102 receives the response packet from the first WiFi AP 106, thenthe probing packet check unit 604 determines that the probing packetcheck is successful. If the transmission and/or reception of the probingpacket is unsuccessful (e.g., no response packet received from the firstWiFi AP 106), the probing packet check unit 604 determines the probingpacket check is unsuccessful. The probing packet check unit 604 providesinformation 406 (e.g., whether the probing packet check is successfuland/or the quality of connection) to the switch network logic 214.

In some examples, the probing packet check unit 604 transmits one ormore probing packets to the first WiFi AP 106 at one or moretransmission rates. The probing packet check unit 604 uses the probingpackets at the multiple different transmission rates to predict whetherthe connection between the first WiFi AP 106 and the mobile device 102will be beyond the quality threshold. For example, the probing packetcheck unit 604 transmits a probing packet at the most reliabletransmission rate. When there is no successful reception from the firstWiFi AP 106 at the most reliable transmission rate, the probing packetcheck unit 604 determines that the connection between the first WiFi AP106 and the mobile device 102 will be beyond the quality threshold.

At step 708, the logic 214 predicts that a connection to the firstnetwork will be beyond the quality threshold based on transmitting theprobing packet to the AP, such as the first WiFi AP 106. For example, ifthe probing packet check fails, the logic 214 determines the firstnetwork will be beyond the quality threshold. At step 710, the logic 214switches from the first network to the second network based on theprediction at step 708.

In some instances, as described above, the functionalities of the logic212 described above and/or below are included to the method 700. Forexample, in at least one example, referring to step 506, the logic 214uses the probing packet check, the rate of change of the RSSI (e.g.,from step 504), and/or the quality of connection (e.g., from step 502)to predict whether the connection to the first network will be beyondthe quality threshold and/or whether to switch from the first network tothe second network.

FIG. 8 is another block diagram illustrating the mobile device 102 thatproactively switches to a new or second network. The logic 212 includesan RSSI forecast estimation unit 802, a prediction using RSSI velocityunit 804, and an error analysis unit 806. Although these sub-units 802,804, and 806 are illustrated as children units subordinate of the parentlogic 212, each sub-unit can be operated as a separate unit from theparent logic, and other suitable combinations of sub-units arecontemplated to suit different applications. The functionalities of thelogic 210 and 214 are described above. Additionally, and/oralternatively, the logic 210 and/or 214 is optional (e.g., the mobiledevice 102 proactively switches to a second network without using thefunctionalities of the logic 210 and/or 214). For example, FIG. 8 willbe described below without the functionalities of the logic 210.However, the functionalities of the logic 210 may be included withinFIG. 8. For instance, in at least one example, the mobile device useslogic 210 to predict whether a connection to the first network will bebeyond the quality threshold based on the quality of connection of thefirst network as described above. FIG. 8 will be described withreference to FIG. 9. FIG. 9 shows another flowchart of a method toproactively switch to a new or second network.

As explained below, in some examples, the logic 212 uses observed RSSImeasurements and a Kalman Filter to proactively switch to the secondnetwork. For example, a Kalman Filter uses a series of observedmeasurements (e.g., RSSI measurements) and one or more current estimatedstates (e.g., RSSI forecast data) to predict a future state and/or apredicted (e.g., future) value for the system. Once the future state isobserved, the Kalman Filter determines errors between the predictedfuture state and the observed future state, and updates the modelaccordingly. Then, in the next iteration, the Kalman Filter uses theupdated model to predict another future state of the system, and theprocess repeats.

In operation, at step 902, the RSSI forecast estimation unit 802determines RSSI forecast data (e.g., an estimated state) correspondingto a first network, such as the first WiFi network 104. For example, theRSSI forecast estimation unit 802 determines a linear model indicatingthe velocity of the RSSI, such as RSSI at time (N+M) sec=RSSI at time Nsec+RSSI_velocity*M. N represents a variable, such as time. M indicatesa period of time to update the model (e.g., if M is three seconds, thenthe rate of change of RSSI logic 212 updates the model every threeseconds).

At step 904, the RSSI forecast estimation unit 802 obtains new (e.g.,current) RSSI information 404, such as the current or most recent RSSIvalues and/or states corresponding to the first WiFi AP 106. The RSSIforecast estimation unit 802 provides information 808 (e.g., the linearmodel and/or the current RSSI information 404) to the error analysisunit 806.

At step 906, the error analysis unit 806 determines one or moreprediction errors based on the new RSSI information and the RSSIforecast data (e.g., the previously estimated state, such as the linearmodel described at step 902). In other words, the error analysis unit806 uses the RSSI forecast data, previous predicted RSSI values, and/orthe current RSSI information to determine errors between the predictedstate and the actual state. In some examples, the error analysis unit806 determines errors based on comparing the current RSSI values fromthe new RSSI information with previously predicted RSSI values.

At step 908, the error analysis unit 806 updates, using a Kalman filter,the RSSI forecast data based on the prediction errors determined at step906. The updated RSSI forecast data (e.g., an updated linear model)indicates one or more predicted future states for the first WiFi AP 106.For example, by determining the errors between the predicted state andthe actual state, the error analysis unit 806 determines updated RSSIforecast data for the first WiFi AP 106. The error analysis unit 806provides the RSSI forecast data to the prediction using RSSI velocityunit 804.

At step 910, the prediction using RSSI velocity unit 804 uses a KalmanFilter to determine a future RSSI value based on the updated RSSIforecast data. For example, the unit 804 uses the updated RSSI forecastdata (e.g., the updated linear model) to predict (e.g., determine) theRSSI value at time (N+P) sec (e.g., a future RSSI value at future timeN+P).

At step 912, the prediction using RSSI velocity unit 804 determineswhether the connection to the first network will be beyond the qualitythreshold. For example, the unit 804 compares the future RSSI value fromstep 910 with an RSSI threshold (e.g., a pre-determined and/orpre-programmed threshold). If the future RSSI value is beyond (e.g.,above or below) an RSSI threshold, then the unit 804 predicts (e.g.,determines) that in P seconds (e.g., 15 seconds) the connection will bebeyond the quality threshold. If the future RSSI value is not beyondthan the RSSI threshold, then the unit 804 predicts that in P secondsthe connection will not be beyond the quality threshold. If the unit 804predicts that the connection will be beyond the quality threshold, theunit 804 provides information 408 (e.g., the connection will be beyondthe quality threshold) to the logic 214. At step 914, as describedabove, the logic 214 switches, based on the prediction from step 910,from the first network to the second network.

If the unit 804 predicts that the connection to the first network willnot be beyond the quality threshold, then the method 900 moves back tostep 904. Then, the process repeats continuously from step 904 until thelogic 212 predicts the connection will be beyond the quality threshold(e.g., the logic 212 obtains new RSSI information from the first WiFi AP106, determines prediction errors based on the new RSSI information andthe current RSSI forecast data, updates the current RSSI forecast data,and uses the updated RSSI forecast data to determine a new future RSSIvalue, and determine whether the future RSSI value is beyond a qualitythreshold).

In some examples, at step 902, the RSSI forecast estimation unit 802determines RSSI data indicating a second order model (e.g., usingacceleration), such as RSSI at time (N+M)sec=RSSI at timeNsec+RSSI_velocity*M+RSSI_acceleration*(½)M{circumflex over ( )}2. Thelogic 212 uses the second order model to predict, update, andproactively switch from a first network to a second network.

In some variations, the logic 212 adapts (e.g., changes) the time, P,based on the prediction error. For example, if the difference (e.g.,variance) between the predicted RSSI at time (N+P) sec and the actualobserved RSSI at time (N+P) sec is larger than a threshold, then thelogic 212 reduces the value of P (e.g., from 15 seconds to 10 seconds).Then, in the next iteration of method 900, the new P value is used topredict whether the first network will be beyond the quality threshold.In some instances, instead of using a Kalman Filter, the logic 212 usesdifferent methods and/or other algorithms, such as moving averages, topredict whether the first network will be beyond the quality threshold.

FIGS. 10 and 11 shows graphs of observed RSSI values, RSSI forecastdata, and velocity of the RSSI forecast data (e.g., determined usingobserved RSSI values and a Kalman Filter). For example, graph 1005 showsobserved RSSI values 1010 over a period of time. For instance, a mobiledevice 102 and the first WiFi AP 106 is a similar distance away fromeach other for the first minute (e.g., 14:10). Then, the mobile device102 is moved away from the first WiFi AP 106, and then back. However,there may be noise in the RSSI and incorporating a filter, such as aKalman Filter is used to reduce the noise and proactively switch to asecond network. Graph 1015 shows the observed RSSI values 1010, and alsoshows RSSI forecast data 1020.

Referring to FIG. 11, graph 1105 shows the velocity (e.g., derivative)from the RSSI forecast data 1110. In some examples, using the velocityfrom the RSSI forecast data 1110, the prediction using RSSI velocityunit 804 predicts whether the connection to the first network will bebeyond the quality threshold, and when the connection will be beyond thequality threshold (e.g., at time P). Additionally, and/or alternatively,as mentioned above in FIGS. 4 and 5, the logic 212 and/or 214 uses thevelocity from the RSSI forecast data 1110 to determine scores (e.g.,Stationary, Wandering, Striding, Sprinting) and the quality ofconnection to predict that a connection to the first network will bebeyond the quality threshold.

In some examples, prior to switching from the first network to thesecond network (e.g., prior to steps 508, 710, and/or 910), the logic214 performs a further check (e.g., an enhance prediction reliabilitycheck) to avoid flipping between the first and second network. Forexample, the logic 214 compares the current RSSI for the first WiFi AP106 with an entering threshold RSSIenter. The RSSIenter is a thresholdindicating whether to connect to a network. For example, a mobile device102 connects to the web server 110 via the cellular network 112. Basedon the mobile device 102 determining the RSSI for the first WiFi AP 106is above the RSSIenter, then the mobile device 102 switches to the firstWiFi AP 106. Furthermore, prior to switching from the first network tothe second network, the logic 212 performs a further check to determineif the current RSSI for the first WiFi AP 106 is above RSSIenter for thefirst WiFi AP 106. The logic 214 stays with the first WiFi network 104if current RSSI value for the first WiFi AP 106 is above the RSSIentervalue.

In some instances, the logic 214 performs a further check to check thenumber of successful transmissions and/or receptions between the mobiledevice 102 and the first WiFi AP 106. If the logic 214 determines thenumber of successful transmissions and receptions recently are above athreshold, then logic 214 does not switch to the second network.

In some variations, the logic 212 adjusts the RSSIleave. The RSSIleaveis a threshold RSSI value indicating when the mobile device 102 shouldleave the first network for a second network due to a poor internetconnection. For example, initially the mobile device 102 sets theRSSIleave to the same value as the RSSIenter. Then, referring to step906 on FIG. 9, the logic 212 reduces the RSSI threshold (e.g., theRSSIleave) when the predicted RSSI value (e.g., RSSI at time (N+P) sec)is close to the RSSIleave and the transmission success rate (e.g.,number of succession transmissions/total number of transmissions) isgreater than a threshold. Additionally, and/or alternatively, the logic212 reduces the RSSIleave by setting the RSSIleave=min (SSIleave,RSSIcheck).

By using the above methods and components, the mobile device 102proactively switches to a second network prior to a data stall betweenthe first connection and the mobile device 102. As such, the mobiledevice 102 is able to prevent poor and/or loss of network connectivityby proactively switching to a second network. Further, by the mobiledevice 102 performing one or more of the methods describes above, anadditional network load (e.g., a load at the first WiFi AP 106) isprevented. Additionally, and/or alternatively, by the mobile device 102performing one or more of the methods describes above, the mobile device102 avoids switching to a new network too early. Switching to a newnetwork causes thrashing between the network types. Further, switchesare also expensive since they require re-establishing the end-to-endconnections for application data (e.g., for stream based protocols).

In various embodiments, executable suitable instructions may be storedon a non-transitory computer readable storage medium, where theexecutable instructions are executable by one or more processors tocause the one or more processors to perform the actions describedherein. Referring back to FIG. 2, in some examples, the memory 204stores executable instructions to be executed by the mobile device 102.The memory 204 is any suitable memory, such as RAM, non-volatile memory(e.g., ROM, flash memory, EPROM, EEPROM, etc.), a disk storage device,or any other suitable memory that may store executable instructions.Some or all of this functionality may also be implemented in any othersuitable manner such as, but not limited to, a software implementationincluding, for example, a driver implementation, a firmwareimplementation, a hardware implementation, or any suitable combinationof the example implementations described above.

In situations in which the methods and systems discussed herein maycollect personal information about users, or may make use of personalinformation (e.g., user data), users are provided with one or moreopportunities to control how information is collected about the user andused in one or more described features. A user is provided with controlover whether programs or features collect user data (e.g., informationabout a user's social network, user characteristics (age, gender,profession, etc.), social actions or activities, a user's preferences,content created or submitted by a user, a user's current geographiclocation, etc.). A user is provided with control over whether programsor features collect user information about that particular user or otherusers relevant to the program or feature. Each user for which personalinformation is to be collected is presented with one or more options toallow control over the information collection relevant to that user, toprovide permission or authorization as to whether the information iscollected and as to which portions of the information are to becollected. For example, users can be provided with one or more controloptions over a communication network. In addition, certain data may betreated in one or more ways before it is stored or used, so thatpersonally identifiable information is removed. For example, a user'sidentity may be treated so that no personally identifiable informationcan be determined for the user, or a user's geographic location may begeneralized to a larger region so that a particular location of a usercannot be determined.

In the preceding detailed description, reference has been made to theaccompanying drawings which form a part thereof, and in which is shownby way of illustration specific embodiments in which the invention maybe practiced. These embodiments are described in sufficient detail toenable those skilled in the art to practice the invention, and it is tobe understood that other embodiments may be utilized and that logical,mechanical, chemical and electrical changes may be made withoutdeparting from the spirit or scope of the invention. To avoid detail notnecessary to enable those skilled in the art to practice the invention,the description may omit certain information known to those skilled inthe art. Furthermore, many other varied embodiments that incorporate theteachings of the invention may be easily constructed by those skilled inthe art. Accordingly, the present invention is not intended to belimited to the specific form set forth herein, but on the contrary, itis intended to cover such alternatives, modifications, and equivalents,as can be reasonably included within the spirit and scope of theinvention. The preceding detailed description is, therefore, not to betaken in a limiting sense, and the scope of the present invention isdefined only by the appended claims. The above detailed description ofthe embodiments and the examples described therein have been presentedfor the purposes of illustration and description only and not bylimitation. It is therefore contemplated that the present inventioncovers any and all modifications, variations or equivalents that fallwithin the spirit and scope of the basic underlying principles disclosedabove and claimed herein

What is claimed is:
 1. A computer-implemented method when executed ondata processing hardware causes the data processing hardware to performoperations, the operations comprising: establishing a network connectionbetween a user device and a web server using a first network connectionprovided by a first access point among a plurality of access points of anetwork system; determining that a first quality of connection for thefirst network connection fails to satisfy a threshold value, the firstquality of connection for the first network connection based on a firstreceived signal strength indicator (RSSI) of the first access point; inresponse to determining that the first quality of connection for thefirst network connection fails to satisfy the threshold value,identifying a second network connection provided by a second accesspoint among the plurality of access points of the network system;determining that a second quality of connection for the second networkconnection satisfies the threshold value, the second quality ofconnection based on a second RSSI of the second access point; and inresponse to determining that the second quality of connection for thesecond network connection satisfies the threshold value, switching thenetwork connection between the user device and the web server from thefirst network connection to the second network connection.
 2. Thecomputer-implemented method of claim 1, wherein the first networkconnection comprises a Wi-Fi network connection and the second networkconnection comprises a cellular network connection.
 3. Thecomputer-implemented method of claim 1, wherein the first networkconnection comprises a cellular network connection and the secondnetwork connection comprises a Wi-Fi network connection.
 4. Thecomputer-implemented method of claim 1, wherein the first networkconnection comprises a first Wi-Fi network connection and the secondnetwork connection comprises a second Wi-Fi network connection.
 5. Thecomputer-implemented method of claim 1, wherein the user devicecomprises a mobile device.
 6. The computer-implemented method of claim1, wherein the operations further comprise: comparing the first RSSI ofthe first access point to the second RSSI of the second access point;and determining that the second RSSI of the second access point exceedsthe first RSSI of the first access point by a switching threshold,wherein switching the network connection between the user device and theweb server from the first network connection to the second networkconnection is based on the determining that the second RSSI of thesecond access point exceeds the first RSSI of the first access point bythe switching threshold.
 7. The computer-implemented method of claim 1,wherein determining each quality of connection for the first quality ofconnection and the second quality of connection comprises determining anumber of successful packet transmissions or a number of failed packettransmissions.
 8. The computer-implemented method of claim 1, whereindetermining each quality of connection for the first quality ofconnection and the second quality of connection comprises determining anumber of successful packet receptions or a number of failed packetreceptions.
 9. The computer-implemented method of claim 1, whereindetermining each quality of connection for the first quality ofconnection and the second quality of connection comprises determining afirst rate of change for the first RSSI of the first access point and asecond rate of change for the second RSSI of the second access point.10. The computer-implemented method of claim 9, wherein determining eachrate of change for the first rate of change and the second rate ofchange further comprises determining whether the respective rate ofchange is positive or negative.
 11. A system comprising: data processinghardware; and memory hardware in communication with the data processinghardware, the memory hardware storing instructions that when executed onthe data processing hardware cause the data processing hardware toperform operations comprising: establishing a network connection betweena user device and a web server using a first network connection providedby a first access point among a plurality of access points of a networksystem; determining that a first quality of connection for the firstnetwork connection fails to satisfy a threshold value, the first qualityof connection for the first network connection based on a first receivedsignal strength indicator (RSSI) of the first access point; in responseto determining that the first quality of connection for the firstnetwork connection fails to satisfy the threshold value, identifying asecond network connection provided by a second access point among theplurality of access points of the network system; determining that asecond quality of connection for the second network connection satisfiesthe threshold value, the second quality of connection based on a secondRSSI of the second access point; and in response to determining that thesecond quality of connection for the second network connection satisfiesthe threshold value, switching the network connection between the userdevice and the web server from the first network connection to thesecond network connection.
 12. The system of claim 11, wherein the firstnetwork connection comprises a Wi-Fi network connection and the secondnetwork connection comprises a cellular network connection.
 13. Thesystem of claim 11, wherein the first network connection comprises acellular network connection and the second network connection comprisesa Wi-Fi network connection.
 14. The system of claim 11, wherein thefirst network connection comprises a first Wi-Fi network connection andthe second network connection comprises a second Wi-Fi networkconnection.
 15. The system of claim 11, wherein the user devicecomprises a mobile device.
 16. The system of claim 11, wherein theoperations further comprise: comparing the first RSSI of the firstaccess point to the second RSSI of the second access point; anddetermining that the second RSSI of the second access point exceeds tothe first RSSI of the first access point by a switching threshold,wherein switching the network connection between the user device and theweb server from the first network connection to the second networkconnection is based on the determining that the second RSSI of thesecond access point exceeds the first RSSI of the first access point bythe switching threshold.
 17. The system of claim 11, wherein determiningeach quality of connection for the first quality of connection and thesecond quality of connection comprises determining a number ofsuccessful packet transmissions or a number of failed packettransmissions.
 18. The system of claim 11, wherein determining eachquality of connection for the first quality of connection and the secondquality of connection comprises determining a number of successfulpacket receptions or a number of failed packet receptions.
 19. Thesystem of claim 11, wherein determining each quality of connection forthe first quality of connection and the second quality of connectioncomprises determining a first rate of change for the for the first RSSIof the first access point and a second rate of change for the secondRSSI of the second access point.
 20. The system of claim 19, whereindetermining each rate of change for the first rate of change and thesecond rate of change further comprises determining whether therespective rate of change is positive or negative.